package io.renren.utils;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;

import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.FormulaEvaluator;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import io.renren.entity.DictDepartmentEntity;
import io.renren.service.DictDepartmentService;
import io.renren.service.DictEmployeeService;


@Component
public class ExcelUtils {
	@Autowired
	private  DictDepartmentService dictDepartmentService;
	

	private static ExcelUtils excelUtils;
	
	 @PostConstruct 
		public void init() {       
		 excelUtils= this; 
		 excelUtils.dictDepartmentService= this.dictDepartmentService; 
		} 

	//读取excel
	public static List<List<Object>> readExcel(InputStream is,Integer sheetNo) throws Exception {
		List<List<Object>> rows = new ArrayList<List<Object>>();
		Workbook excel = WorkbookFactory.create(is);
		rows = ExcelUtils.getData(excel,sheetNo);
		rows = ExcelUtils.trim(rows);
		return rows;
	}
	//读取excel
		public static List<List<Object>> readExcel2(InputStream is,Integer sheetNo) throws Exception {
			List<List<Object>> rows = new ArrayList<List<Object>>();
			Workbook excel = WorkbookFactory.create(is);
			rows = ExcelUtils.getData(excel,sheetNo);
			//rows = ExcelUtils.trim(rows);
			return rows;
		}


	//获取数据并返回集合
	private static List<List<Object>> getData(Workbook excel,Integer sheetNo) {
		// 循环工作表Sheet
		List<List<Object>> rows = new ArrayList<List<Object>>();
		List<Object> cells = null;
		FormulaEvaluator formulaEvaluator = excel.getCreationHelper().createFormulaEvaluator();
		Sheet sheet = excel.getSheetAt(sheetNo);
		if (sheet != null) {
			for (int rowNum = 1; rowNum <= sheet.getLastRowNum(); rowNum++) {
				Row row = sheet.getRow(rowNum);
				// 循环列Cell
				cells = new ArrayList<Object>();
				for (int cellNum = 0; cellNum < sheet.getRow(0).getLastCellNum(); cellNum++) {
					Cell cell = row.getCell(cellNum);
					
					if (cell != null) {
						int type = cell.getCellType();
						switch (type) {
						case Cell.CELL_TYPE_NUMERIC:
							if(!HSSFDateUtil.isCellDateFormatted(cell)){
								cells.add(cell.getNumericCellValue());
							}else{
								cells.add(cell.getDateCellValue());
							}
							break;
						case Cell.CELL_TYPE_FORMULA:
							cells.add(cell.getNumericCellValue());
							break;
						default:
							cells.add(cell.getStringCellValue());
							break;
						}		

					} else {
						cells.add(null);
					}
				}
				rows.add(cells);
			}
		}
		return rows;

	}

	private static List<List<Object>> trim(List<List<Object>> list){
		for (int i = 0; i < list.size(); i++) {
			List<Object> rows = list.get(i);
			for (int j = 0; j < rows.size(); j++) {
				Object cell = rows.get(j);
				if("".equals(cell)){
					for (int k = 1; k < i+1; k++) {
						cell = list.get(i-k).get(j);
						if(cell!=""){
							rows.set(j, cell);
							break;
						}
					}
				}
			}
		}
		return list;
	}

	/**
	 * 
	 * @author Murphy Wu
	 * 创建时间：2018年6月11日 上午9:51:04 
	 * 说明 :检测部门导入文件内数据格式是否符合要求
	 */
	public static  R  textDepExcel(InputStream is,Integer sheetNo) throws Exception{
		List<List<Object>> rows = new ArrayList<List<Object>>();
		Workbook excel = WorkbookFactory.create(is);
		List<Object> cells = null;
		Sheet sheet = excel.getSheetAt(sheetNo);
		if (sheet != null) {
			Row firstRow = sheet.getRow(0);
			if (firstRow==null) {
				return R.error("此文件第一行为空，不可导入");
			}
			if (firstRow.getLastCellNum()!=5) {
				return R.error("请根据模版导入");
			}
			for (int cellNum = 0; cellNum < 5; cellNum++) {
				Cell cell = firstRow.getCell(cellNum);
				if (cell != null) {
					if (cell.getCellType()==0  || cell.getCellType()==2) {
						return R.error("请根据模版导入");
					}
					if(cellNum==0){
						if (cell.getStringCellValue().indexOf("名称")<0) {
							return R.error("请根据模版导入");
						}
					}else if (cellNum==1) {
						if (cell.getStringCellValue().indexOf("代码")<0) {
							return R.error("请根据模版导入");
						}
					}else if (cellNum==2) {
						if (cell.getStringCellValue().indexOf("层级")<0) {
							return R.error("请根据模版导入");
						}
					}else if (cellNum==3) {
						if (cell.getStringCellValue().indexOf("上级代码")<0) {
							return R.error("请根据模版导入");
						}
					}else if (cellNum==4) {
						if (cell.getStringCellValue().indexOf("负责人代码")<0) {
							return R.error("请根据模版导入");
						}
					}
				} else {
					return R.error("请根据模版导入");
				}
			}



			for (int rowNum = 1; rowNum <= sheet.getLastRowNum(); rowNum++) {
				Row row = sheet.getRow(rowNum);
				// 循环列Cell
				cells = new ArrayList<Object>();
				if (row==null) {
					return R.error("第"+(rowNum+1)+"行为空，不可导入");
				}
				for (int cellNum = 0; cellNum < 5; cellNum++) {
					Cell cell = row.getCell(cellNum);
					if (cell != null) {
						int type = cell.getCellType();
						switch (type) {
						case Cell.CELL_TYPE_NUMERIC:
							if(!HSSFDateUtil.isCellDateFormatted(cell)){
								if (cell.getNumericCellValue()<0) {
									return R.error("第"+(rowNum+1)+"行的第"+(cellNum+1)+"列为空，不可导入");
								}
								//cells.add(cell.getNumericCellValue());
							}else{
								if (cell.getDateCellValue()==null) {
									return R.error("第"+(rowNum+1)+"行的第"+(cellNum+1)+"列为空，不可导入");
								}
								//cells.add(cell.getDateCellValue());
							}
							break;
						case Cell.CELL_TYPE_FORMULA:
							if (cell.getNumericCellValue()<0) {
								return R.error("第"+(rowNum+1)+"行的第"+(cellNum+1)+"列为空，不可导入");
							}
							//cells.add(cell.getNumericCellValue());
							break;
						default:
							if (cell.getStringCellValue().length()==0) {
								return R.error("第"+(rowNum+1)+"行的第"+(cellNum+1)+"列为空，不可导入");
							}
							//cells.add(cell.getStringCellValue());
							break;
						}		

					} else {
						return R.error("第"+(rowNum+1)+"行的第"+(cellNum+1)+"列为空，不可导入");
					}
				}
				rows.add(cells);
			}
			return R.ok();
		}else{
			return R.error("此文件为空文件，不可导入");
		}

	}

	/**
	 * 
	 * @author Murphy Wu
	 * 创建时间：2018年6月11日 上午9:52:26 
	 * 说明 :检测员工导入文件内数据格式是否符合要求
	 */
	public static  R  textEmpExcel(InputStream is,Integer sheetNo) throws Exception{
		List<List<Object>> rows = new ArrayList<List<Object>>();
		Workbook excel = WorkbookFactory.create(is);
		List<Object> cells = null;
		Sheet sheet = excel.getSheetAt(sheetNo);
		if (sheet != null) {
			Row firstRow = sheet.getRow(0);
			if (firstRow==null) {
				return R.error("此文件第一行为空，不可导入");
			}
			if (firstRow.getLastCellNum()!=25) {
				return R.error("请根据模版导入");
			}
			for (int cellNum = 0; cellNum < 25; cellNum++) {
				Cell cell = firstRow.getCell(cellNum);
				if (cell != null) {
					if (cell.getCellType()==0  || cell.getCellType()==2) {
						return R.error("请根据模版导入");
					}
					if(cellNum==0){
						if (cell.getStringCellValue().indexOf("姓名")<0) {
							return R.error("请根据模版导入");
						}
					}else if (cellNum==1) {
						if (cell.getStringCellValue().indexOf("出生")<0) {
							return R.error("请根据模版导入");
						}
					}else if (cellNum==2) {
						if (cell.getStringCellValue().indexOf("性别")<0) {
							return R.error("请根据模版导入");
						}
					}else if (cellNum==3) {
						if (cell.getStringCellValue().indexOf("身份证")<0) {
							return R.error("请根据模版导入");
						}
					}else if (cellNum==4) {
						if (cell.getStringCellValue().indexOf("员工编号")<0) {
							return R.error("请根据模版导入");
						}
					}else if (cellNum==5) {
						if (cell.getStringCellValue().indexOf("岗位编号")<0) {
							return R.error("请根据模版导入");
						}
					}else if (cellNum==6) {
						if (cell.getStringCellValue().indexOf("部门编号")<0) {
							return R.error("请根据模版导入");
						}
					}else if (cellNum==7) {
						if (cell.getStringCellValue().indexOf("用户名")<0) {
							return R.error("请根据模版导入");
						}
					}else if (cellNum==8) {
						if (cell.getStringCellValue().indexOf("入职时间")<0) {
							return R.error("请根据模版导入");
						}
					}else if (cellNum==9) {
						if (cell.getStringCellValue().indexOf("转正时间")<0) {
							return R.error("请根据模版导入");
						}
					}else if (cellNum==10) {
						if (cell.getStringCellValue().indexOf("离职时间")<0) {
							return R.error("请根据模版导入");
						}
					}else if (cellNum==11) {
						if (cell.getStringCellValue().indexOf("公司手机")<0) {
							return R.error("请根据模版导入");
						}
					}else if (cellNum==12) {
						if (cell.getStringCellValue().indexOf("手机号码")<0) {
							return R.error("请根据模版导入");
						}
						
					}else if (cellNum==13) {
						if (cell.getStringCellValue().indexOf("首月端口")<0) {
							return R.error("请根据模版导入");
						}
					}else if (cellNum==14) {
						if (cell.getStringCellValue().indexOf("业绩端口")<0) {
							return R.error("请根据模版导入");
						}
					}else if (cellNum==15) {
						if (cell.getStringCellValue().indexOf("推荐人")<0) {
							return R.error("请根据模版导入");
						}
					}else if (cellNum==16) {
						if (cell.getStringCellValue().indexOf("主管育成人工号")<0) {
							return R.error("请根据模版导入");
						}
					}else if (cellNum==17) {
						if (cell.getStringCellValue().indexOf("分店育成人工号")<0) {
							return R.error("请根据模版导入");
						}
					}else if (cellNum==18) {
						if (cell.getStringCellValue().indexOf("区域育成人工号")<0) {
							return R.error("请根据模版导入");
						}
					}else if (cellNum==19) {
						if (cell.getStringCellValue().indexOf("大区育成人工号")<0) {
							return R.error("请根据模版导入");
						}
					}else if (cellNum==20) {
						if (cell.getStringCellValue().indexOf("考勤天数")<0) {
							return R.error("请根据模版导入");
						}
					}else if (cellNum==21) {
						if (cell.getStringCellValue().indexOf("社保")<0) {
							return R.error("请根据模版导入");
						}
					}else if (cellNum==22) {
						if (cell.getStringCellValue().indexOf("公积金")<0) {
							return R.error("请根据模版导入");
						}
					}else if (cellNum==23) {
						if (cell.getStringCellValue().indexOf("排名")<0) {
							return R.error("请根据模版导入");
						}
					}else if (cellNum==24) {
						if (cell.getStringCellValue().indexOf("职务津贴")<0) {
							return R.error("请根据模版导入");
						}
					}
				} else {
					return R.error("请根据模版导入");
				}
			}



			for (int rowNum = 1; rowNum <= sheet.getLastRowNum(); rowNum++) {
				Row row = sheet.getRow(rowNum);
				// 循环列Cell
				cells = new ArrayList<Object>();
				if (row==null) {
					return R.error("第"+(rowNum+1)+"行为空，不可导入");
				}
				for (int cellNum = 0; cellNum < 25; cellNum++) {
					Cell cell = row.getCell(cellNum);
					if (cell != null) {
						if (cellNum+1==8 || cellNum+1==10 || cellNum+1==11 || cellNum+1==16 || cellNum+1==17
								|| cellNum+1==18 || cellNum+1==19 || cellNum+1==20) {
							
						} else {
							int type = cell.getCellType();
							switch (type) {
							case Cell.CELL_TYPE_NUMERIC:
								if(!HSSFDateUtil.isCellDateFormatted(cell)){
									if (cell.getNumericCellValue()<0) {
										return R.error("第"+(rowNum+1)+"行的第"+(cellNum+1)+"列为空，不可导入");
									}
									//cells.add(cell.getNumericCellValue());
								}else{
									if (cell.getDateCellValue()==null) {
										return R.error("第"+(rowNum+1)+"行的第"+(cellNum+1)+"列为空，不可导入");
									}
									//cells.add(cell.getDateCellValue());
								}
								break;
							case Cell.CELL_TYPE_FORMULA:
								if (cell.getNumericCellValue()<0) {
									return R.error("第"+(rowNum+1)+"行的第"+(cellNum+1)+"列为空，不可导入");
								}
								//cells.add(cell.getNumericCellValue());
								break;
							default:
								if (cell.getStringCellValue().length()==0) {
									return R.error("第"+(rowNum+1)+"行的第"+(cellNum+1)+"列为空，不可导入");
								}
								if (cellNum==6) {
									Integer number=excelUtils.dictDepartmentService.searchNoCount(cell.getStringCellValue());
									System.out.println("开心就好"+number);
									if (number==0) {
										return R.error("第"+(rowNum+1)+"行的第"+(cellNum+1)+"列的个人部门编号在部门中无法找到，不可导入");
									}
								}
								//cells.add(cell.getStringCellValue());
								break;
							}
						}
					} else {
						if (cellNum+1==8 || cellNum+1==10 || cellNum+1==11 || cellNum+1==16 || cellNum+1==17
								|| cellNum+1==18 || cellNum+1==19 || cellNum+1==20) {

						} else {
							return R.error("第"+(rowNum+1)+"行的第"+(cellNum+1)+"列为空，不可导入");
						}

					}
				}
				rows.add(cells);
			}
			return R.ok();
		}else{
			return R.error("此文件为空文件，不可导入");
		}

	}


	/**
	 * 
	 * @author Murphy Wu
	 * 创建时间：2018年6月11日 上午11:03:23 
	 * 说明 :检测合同应收实收导入文件内数据格式是否符合要求
	 */
	public static  R  textConExcel(InputStream is,Integer sheetNo) throws Exception{
		List<List<Object>> rows = new ArrayList<List<Object>>();
		Workbook excel = WorkbookFactory.create(is);
		List<Object> cells = null;
		Sheet sheet = excel.getSheetAt(sheetNo);
		if (sheet != null) {
			Row firstRow = sheet.getRow(0);
			if (firstRow==null) {
				return R.error("此文件第一行为空，不可导入");
			}
			if (firstRow.getLastCellNum()!=36) {
				return R.error("请根据模版导入");
			}
			for (int cellNum = 0; cellNum < 35; cellNum++) {
				Cell cell = firstRow.getCell(cellNum);

				if (cell != null) {
					if (cell.getCellType()==0  || cell.getCellType()==2) {
						return R.error("请根据模版导入");
					}
					if(cellNum==0){
						if (cell.getStringCellValue().indexOf("合同编号")<0) {
							return R.error("请根据模版导入");
						}
					}else if (cellNum==1) {
						if (cell.getStringCellValue().indexOf("合同名")<0) {
							return R.error("请根据模版导入");
						}
					}else if (cellNum==2) {
						if (cell.getStringCellValue().indexOf("合同签订时间")<0) {
							return R.error("请根据模版导入");
						}
					}else if (cellNum==3) {
						if (cell.getStringCellValue().indexOf("地址")<0) {
							return R.error("请根据模版导入");
						}
					}else if (cellNum==4) {
						if (cell.getStringCellValue().indexOf("合同金额")<0) {
							return R.error("请根据模版导入");
						}
					}else if (cellNum==5) {
						if (cell.getStringCellValue().indexOf("已收")<0) {
							return R.error("请根据模版导入");
						}
					}else if (cellNum==6) {
						if (cell.getStringCellValue().indexOf("当月实收")<0) {
							return R.error("请根据模版导入");
						}
					}else if (cellNum==7) {
						if (cell.getStringCellValue().indexOf("收款时间")<0) {
							return R.error("请根据模版导入");
						}
					}else if (cellNum==8) {
						if (cell.getStringCellValue().indexOf("未收")<0) {
							return R.error("请根据模版导入");
						}
					}else if (cellNum==9) {
						if (cell.getStringCellValue().indexOf("签单人工号")<0) {
							return R.error("请根据模版导入");
						}
					}else if (cellNum==10) {
						if (cell.getStringCellValue().indexOf("签单人姓名")<0) {
							return R.error("请根据模版导入");
						}
					}else if (cellNum==11 || cellNum==15 || cellNum==19 || cellNum==23 || cellNum==27 || cellNum==31) {
						if (cell.getStringCellValue().indexOf("分成人工号")<0) {
							return R.error("请根据模版导入");
						}
					}else if (cellNum==12 || cellNum==16 || cellNum==20 || cellNum==24 || cellNum==28 || cellNum==32) {
						if (cell.getStringCellValue().indexOf("分成人姓名")<0) {
							return R.error("请根据模版导入");
						}
					}else if (cellNum==13 || cellNum==17 || cellNum==21 || cellNum==25 || cellNum==29 || cellNum==33) {
						if (cell.getStringCellValue().indexOf("分成比例")<0) {
							return R.error("请根据模版导入");
						}
					}else if (cellNum==14 || cellNum==18 || cellNum==22 || cellNum==26 || cellNum==30 || cellNum==34) {
						if (cell.getStringCellValue().indexOf("合同个数")<0) {
							return R.error("请根据模版导入");
						}
					}else if (cellNum==35) {
						if (cell.getStringCellValue().indexOf("备注")<0) {
							return R.error("请根据模版导入");
						}
					}
				} else {
					return R.error("请根据模版导入");
				}
			}



			for (int rowNum = 1; rowNum <= sheet.getLastRowNum(); rowNum++) {
				Row row = sheet.getRow(rowNum);
				// 循环列Cell
				cells = new ArrayList<Object>();
				if (row==null) {
					return R.error("第"+(rowNum+1)+"行为空，不可导入");
				}
				for (int cellNum = 0; cellNum < 35; cellNum++) {
					Cell cell = row.getCell(cellNum);
					if (cell != null) {
						if (cellNum+1==4) {

						}else if(cellNum+1==16 || cellNum+1==20 || cellNum+1==24 || cellNum+1==28 || cellNum+1==32){
							int type = cell.getCellType();
							switch (type) {
							case Cell.CELL_TYPE_NUMERIC:
								if(!HSSFDateUtil.isCellDateFormatted(cell)){
									if (cell.getNumericCellValue()<0) {
										cellNum=cellNum+3;
									}
									//cells.add(cell.getNumericCellValue());
								}else{
									if (cell.getDateCellValue()==null) {
										cellNum=cellNum+3;
									}
									//cells.add(cell.getDateCellValue());
								}
								break;
							case Cell.CELL_TYPE_FORMULA:
								 cell.setCellType(Cell.CELL_TYPE_STRING);
								if (cell.getNumericCellValue()<0) {
									cellNum=cellNum+3;
								}
								//cells.add(cell.getNumericCellValue());
								break;
							default:
								if (cell.getStringCellValue().length()==0) {
									cellNum=cellNum+3;
								}
								//cells.add(cell.getStringCellValue());
								break;
							}

						} else {
							int type = cell.getCellType();
							switch (type) {
							case Cell.CELL_TYPE_NUMERIC:
								if(!HSSFDateUtil.isCellDateFormatted(cell)){
									if (cell.getNumericCellValue()<0) {
										return R.error("第"+(rowNum+1)+"行的第"+(cellNum+1)+"列为空，不可导入");
									}
									//cells.add(cell.getNumericCellValue());
								}else{
									if (cell.getDateCellValue()==null) {
										return R.error("第"+(rowNum+1)+"行的第"+(cellNum+1)+"列为空，不可导入");
									}
									//cells.add(cell.getDateCellValue());
								}
								break;
							case Cell.CELL_TYPE_FORMULA:
								if (cell.getNumericCellValue()<0) {
									return R.error("第"+(rowNum+1)+"行的第"+(cellNum+1)+"列为空，不可导入");
								}
								//cells.add(cell.getNumericCellValue());
								break;
							default:
								if (cell.getStringCellValue().length()==0) {
									return R.error("第"+(rowNum+1)+"行的第"+(cellNum+1)+"列为空，不可导入");
								}
								//cells.add(cell.getStringCellValue());
								break;
							}
						}


					} else {
						if (cellNum+1==4) {

						}else if(cellNum+1==16 || cellNum+1==20 || cellNum+1==24 || cellNum+1==28 || cellNum+1==32){
							cellNum=cellNum+3;
						} else {
							return R.error("第"+(rowNum+1)+"行的第"+(cellNum+1)+"列为空，不可导入");
						}

					}
				}
				rows.add(cells);
			}
			return R.ok();
		}else{
			return R.error("此文件为空文件，不可导入");
		}

	}


	/**
	 * 
	 * @author Murphy Wu
	 * 创建时间：2018年6月11日 上午9:51:04 
	 * 说明 :检测员工加款项导入文件内数据格式是否符合要求
	 */
	public static  R  textAddMoneyExcel(InputStream is,Integer sheetNo) throws Exception{
		List<List<Object>> rows = new ArrayList<List<Object>>();
		Workbook excel = WorkbookFactory.create(is);
		List<Object> cells = null;
		Sheet sheet = excel.getSheetAt(sheetNo);
		if (sheet != null) {
			Row firstRow = sheet.getRow(0);
			if (firstRow==null) {
				return R.error("此文件第一行为空，不可导入");
			}
			if (firstRow.getLastCellNum()!=4) {
				return R.error("请根据模版导入");
			}
			for (int cellNum = 0; cellNum < 4; cellNum++) {
				Cell cell = firstRow.getCell(cellNum);
				if (cell != null) {
					if (cell.getCellType()==0  || cell.getCellType()==2) {
						return R.error("请根据模版导入");
					}
					if(cellNum==0){
						if (cell.getStringCellValue().indexOf("员工工号")<0) {
							return R.error("请根据模版导入");
						}
					}else if (cellNum==1) {
						if (cell.getStringCellValue().indexOf("员工姓名")<0) {
							return R.error("请根据模版导入");
						}
					}/*else if (cellNum==2) {
						if (cell.getStringCellValue().indexOf("身份证号")<0) {
							return R.error("请根据模版导入");
						}
					}*/else if (cellNum==2) {
						if (cell.getStringCellValue().indexOf("加款金额")<0) {
							return R.error("请根据模版导入");
						}
					}else if (cellNum==3) {
						if (cell.getStringCellValue().indexOf("加款事由")<0) {
							return R.error("请根据模版导入");
						}
					}
				} else {
					return R.error("请根据模版导入");
				}
			}



			for (int rowNum = 1; rowNum <= sheet.getLastRowNum(); rowNum++) {
				Row row = sheet.getRow(rowNum);
				// 循环列Cell
				cells = new ArrayList<Object>();
				if (row==null) {
					return R.error("第"+(rowNum+1)+"行为空，不可导入");
				}
				for (int cellNum = 0; cellNum < 4; cellNum++) {
					Cell cell = row.getCell(cellNum);
					if (cell != null) {
						int type = cell.getCellType();
						switch (type) {
						case Cell.CELL_TYPE_NUMERIC:
							if(!HSSFDateUtil.isCellDateFormatted(cell)){
								if (cell.getNumericCellValue()<0) {
									return R.error("第"+(rowNum+1)+"行的第"+(cellNum+1)+"列为空，不可导入");
								}
								//cells.add(cell.getNumericCellValue());
							}else{
								if (cell.getDateCellValue()==null) {
									return R.error("第"+(rowNum+1)+"行的第"+(cellNum+1)+"列为空，不可导入");
								}
								//cells.add(cell.getDateCellValue());
							}
							break;
						case Cell.CELL_TYPE_FORMULA:
							if (cell.getNumericCellValue()<0) {
								return R.error("第"+(rowNum+1)+"行的第"+(cellNum+1)+"列为空，不可导入");
							}
							//cells.add(cell.getNumericCellValue());
							break;
						default:
							if (cell.getStringCellValue().length()==0) {
								return R.error("第"+(rowNum+1)+"行的第"+(cellNum+1)+"列为空，不可导入");
							}
							//cells.add(cell.getStringCellValue());
							break;
						}		

					} else {
						return R.error("第"+(rowNum+1)+"行的第"+(cellNum+1)+"列为空，不可导入");
					}
				}
				rows.add(cells);
			}
			return R.ok();
		}else{
			return R.error("此文件为空文件，不可导入");
		}

	}



	/**
	 * 
	 * @author Murphy Wu
	 * 创建时间：2018年6月11日 上午9:51:04 
	 * 说明 :检测员工扣款项导入文件内数据格式是否符合要求
	 */
	public static  R  textLostMoneyExcel(InputStream is,Integer sheetNo) throws Exception{
		List<List<Object>> rows = new ArrayList<List<Object>>();
		Workbook excel = WorkbookFactory.create(is);
		List<Object> cells = null;
		Sheet sheet = excel.getSheetAt(sheetNo);
		if (sheet != null) {
			Row firstRow = sheet.getRow(0);
			if (firstRow==null) {
				return R.error("此文件第一行为空，不可导入");
			}
			if (firstRow.getLastCellNum()!=4) {
				return R.error("请根据模版导入");
			}
			for (int cellNum = 0; cellNum < 4; cellNum++) {
				Cell cell = firstRow.getCell(cellNum);
				if (cell != null) {
					if (cell.getCellType()==0  || cell.getCellType()==2) {
						return R.error("请根据模版导入");
					}
					if(cellNum==0){
						if (cell.getStringCellValue().indexOf("员工工号")<0) {
							return R.error("请根据模版导入");
						}
					}else if (cellNum==1) {
						if (cell.getStringCellValue().indexOf("员工姓名")<0) {
							return R.error("请根据模版导入");
						}
					}/*else if (cellNum==2) {
						if (cell.getStringCellValue().indexOf("身份证号")<0) {
							return R.error("请根据模版导入");
						}
					}*/else if (cellNum==2) {
						if (cell.getStringCellValue().indexOf("扣款金额")<0) {
							return R.error("请根据模版导入");
						}
					}else if (cellNum==3) {
						if (cell.getStringCellValue().indexOf("扣款事由")<0) {
							return R.error("请根据模版导入");
						}
					}
				} else {
					return R.error("请根据模版导入");
				}
			}



			for (int rowNum = 1; rowNum <= sheet.getLastRowNum(); rowNum++) {
				Row row = sheet.getRow(rowNum);
				// 循环列Cell
				cells = new ArrayList<Object>();
				if (row==null) {
					return R.error("第"+(rowNum+1)+"行为空，不可导入");
				}
				for (int cellNum = 0; cellNum < 4; cellNum++) {
					Cell cell = row.getCell(cellNum);
					if (cell != null) {
						int type = cell.getCellType();
						switch (type) {
						case Cell.CELL_TYPE_NUMERIC:
							if(!HSSFDateUtil.isCellDateFormatted(cell)){
								if (cell.getNumericCellValue()<0) {
									return R.error("第"+(rowNum+1)+"行的第"+(cellNum+1)+"列为空，不可导入");
								}
								//cells.add(cell.getNumericCellValue());
							}else{
								if (cell.getDateCellValue()==null) {
									return R.error("第"+(rowNum+1)+"行的第"+(cellNum+1)+"列为空，不可导入");
								}
								//cells.add(cell.getDateCellValue());
							}
							break;
						case Cell.CELL_TYPE_FORMULA:
							if (cell.getNumericCellValue()<0) {
								return R.error("第"+(rowNum+1)+"行的第"+(cellNum+1)+"列为空，不可导入");
							}
							//cells.add(cell.getNumericCellValue());
							break;
						default:
							if (cell.getStringCellValue().length()==0) {
								return R.error("第"+(rowNum+1)+"行的第"+(cellNum+1)+"列为空，不可导入");
							}
							//cells.add(cell.getStringCellValue());
							break;
						}		

					} else {
						return R.error("第"+(rowNum+1)+"行的第"+(cellNum+1)+"列为空，不可导入");
					}
				}
				rows.add(cells);
			}
			return R.ok();
		}else{
			return R.error("此文件为空文件，不可导入");
		}

	}
}


